A virtual machine is a set of computer programs and data structures that use a specified model for the execution of other computer programs and scripts. According to one such model, a virtual machine accepts a form of computer intermediate language commonly referred to as bytecode. This language conceptually represents the instruction set of a stack-oriented computer system.
A Java virtual machine (JVM) is a key component of a Java system and is available for many computer hardware and software platforms. The use of the same bytecode for all platforms allows a Java program to be compiled once and run in different computer environments. The Java virtual machine also enables features such as automated exception handling for providing debug information on software errors independent of the source code. A Java virtual machine implementation is often distributed along with a set of standard class libraries that implement a Java API (Application Programming Interface). An Application Programming Interface is a component through which a computer system, library or application use to exchange control information and data among them.
Programs intended to run on a Java virtual machine must be compiled into a standardized portable binary format, which typically comes in the form of bytecode executable files. A program may consist of many classes in different files. For easier distribution of large programs, multiple class files may be packaged together in a Java archive file called a “jar” file. At run-time, the Java virtual machine executes the bytecode executable files and jar files.
There exists a need for an efficient way of reducing the amount of memory used for duplicate strings in virtual machines at run-time.